package com.zjp;

import cn.hutool.core.util.RandomUtil;
import com.google.gson.annotations.*;
import lombok.Data;

import java.util.ArrayList;
import java.util.List;

@Data
public class GUser {
    // 指定序列化对应版本号(不设置默认全部)
    // 大于等于指定版本 参与序列化和反序列化
    @Since(1.0)
    private String name;
    // 小于等于指定版本 参与序列化和反序列化
    @Until(1.2)
    private Integer age;

    private String city;
    // 序列化默认忽略 null
    private Integer sex;
    // 使用 transient 忽略 序列化
    private transient String mobile;
    // 静态变量 默认 忽略 序列化
    private static String country = "China";

    private List<String> hobby = new ArrayList<>();
    @JsonAdapter(UDataTypeAdapter.class)
    @Expose
    private UData uData;

    // 暴露 必须使用（new GsonBuilder().excludeFieldsWithoutExposeAnnotation().create()）
    // 排除没有被@Expose标记的注解
    @Expose
    @SerializedName("id_card")
    private String idCard;
    @Expose
    private String homeAddress;


    public static GUser example() {
        GUser gUser = new GUser();
        gUser.setName(RandomUtil.randomString(7));
        gUser.setAge(RandomUtil.randomInt(100));
        gUser.setCity(RandomUtil.randomString(2));
        gUser.getHobby().add("跑步");
        gUser.setUData(new UData("11", 22));
        return gUser;
    }
}